package basis.netease.easy;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

/**
 * 7-23 背包能装的最大价值
 * 给定n个物品和一个容量为C的背包，物品i的重量是Wi，其价值为Vi，背包问题是如何选择入背包的物品，使得装入背包的物品的总价值最大。
 * 注意：你可以将物品的一部分装入背包，但不能重复装入。
 * 输入格式:
 * 每个测试用例三行，每行之间用逗号“,”分隔。
 * 第一行包括两个数字，分别代表物品数n和背包容量C。
 * 第二行输入的是n个数，代表的是物品的重量；第三行输入的是n个数，代表的是物品的价值.
 * 输出格式:
 * 对于每一组测试用例，请输出最大的价值，注意输出格式为整数，小数部分直接舍去。
 * （特别注意：小数部分不是四舍五入，是直接不要，比如14.99，最终输出为14）
 * 输入样例1:
 * 在这里给出一组输入。例如：
 * 3,50
 * 10,20,30
 * 60,100,120
 * 输出样例1:
 * 在这里给出相应的输出。例如：
 * 240
 * 输入样例2:
 * 在这里给出一组输入。例如：
 * 5,6
 * 2,8,5,2,1
 * 4,6,3,8,2
 * 输出样例2:
 * 在这里给出相应的输出。例如：
 * 14
 */
public class Main_17 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String[] input = scanner.nextLine().split(",");
        int itemNum = Integer.parseInt(input[0].trim());
        int packageWeight = Integer.parseInt(input[1].trim());

        List<Item> items = new ArrayList<>();
        String[] weights = scanner.nextLine().split(",");
        String[] values = scanner.nextLine().split(",");
        for (int i = 0; i < itemNum; i++) {
            items.add(new Item(Double.parseDouble(values[i]), Double.parseDouble(weights[i])));
        }
        // 物品价值从高到底排序
        Collections.sort(items);
        double totalValue = 0;
        for (Item item : items) {
            if (packageWeight >= item.weight) {
                totalValue += item.value;
                packageWeight -= item.weight;
            } else {
                totalValue += item.unitValue * packageWeight;
                break;
            }
        }
        System.out.println((int) totalValue);
    }

    static class Item implements Comparable<Item> {
        double value;
        double weight;
        double unitValue;

        public Item(double value, double weight) {
            this.value = value;
            this.weight = weight;
            this.unitValue = value / weight;
        }

        @Override
        public int compareTo(Item other) {
            return Double.compare(other.unitValue, this.unitValue);
        }
    }

}
